﻿using System;
using System.Windows.Forms;
using CentroVentas.Clases.Utiles;

namespace CentroVentas.Funciones.Proveedores
{

    public partial class FunProveedoresAgregar : Form
    {

        private string _rut;

        public string Rut
        {
            get { return _rut; }
            set { _rut = value; }
        }

        public FunProveedoresAgregar()
        {
            InitializeComponent();
        }

        private void FunProveedoresAgregar_Load(object sender, EventArgs e)
        {
            this.BloquearControles(false);
            txtCodigo.Text = Clases.Funciones.Proveedores.ProximoId().ToString();

            cboRegion.DataSource = Clases.Utiles.Utilidades.GetRegiones().Tables["regiones"];
            cboRegion.ValueMember = "Id";
            cboRegion.DisplayMember = "Nombre";
        }

        private void cboRegion_SelectionChangeCommitted(object sender, EventArgs e)
        {
            cboComuna.Enabled = false;

            cboProvincia.DataSource = Clases.Utiles.Utilidades.GetProvincias(Convert.ToInt32(cboRegion.SelectedValue)).Tables["provincias"];
            cboProvincia.ValueMember = "Id";
            cboProvincia.DisplayMember = "Nombre";

            cboProvincia.Enabled = true;
        }

        private void cboProvincia_SelectionChangeCommitted(object sender, EventArgs e)
        {
            cboComuna.DataSource = Clases.Utiles.Utilidades.GetComunas(Convert.ToInt32(cboProvincia.SelectedValue)).Tables["comunas"];
            cboComuna.ValueMember = "Id";
            cboComuna.DisplayMember = "Nombre";

            cboComuna.Enabled = true;

        }

        private void BloquearControles(bool valor)
        {
            txtRut.Enabled = !valor;
            txtNombre.Enabled = valor;
            txtGiro.Enabled = valor;
            txtDireccion1.Enabled = valor;
            txtDireccion2.Enabled = valor;
            cboRegion.Enabled = valor;
            
            cboProvincia.Enabled = false;
            cboComuna.Enabled = false;
            txtNombreContacto.Enabled = valor;
            txtTelefonoContacto.Enabled = valor;
            txtEmailContacto.Enabled = valor;
            txtComentarios.Enabled = valor;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void txtRut_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r' && !String.IsNullOrWhiteSpace(txtRut.Text))
            {
                if (Clases.RUT.Valido(txtRut.Text))
                {
                    if (!Clases.Funciones.Proveedores.ExisteProveedor(txtRut.Text))
                    {
                        this.BloquearControles(true);
                        txtNombre.Focus();
                    }
                    else
                    {
                        Utilidades.mensaje(TipoMensaje.ERROR, "Usuario existe", 7);
                    }
                }
                else
                {
                    Utilidades.mensaje(TipoMensaje.ERROR, "Rut no valido", 5);
                    txtRut.Focus();
                }
            }
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (!String.IsNullOrWhiteSpace(txtNombre.Text))
            {
                if (!String.IsNullOrWhiteSpace(txtGiro.Text))
                {
                    if (Clases.Validaciones.ValidarEmail(txtEmailContacto.Text))
                    {
                        if (cboComuna.Enabled == true)
                        {
                            if (Clases.Funciones.Proveedores.CrearProovedor(txtRut.Text.Replace(".", ""), txtNombre.Text, txtGiro.Text, txtNombreContacto.Text, txtTelefonoContacto.Text, txtDireccion1.Text, txtDireccion2.Text, txtEmailContacto.Text, Convert.ToInt32(cboComuna.SelectedValue), txtComentarios.Text))
                            {
                                _rut = txtRut.Text;
                                Utilidades.mensaje(TipoMensaje.OK, "Datos almacenados", 0);
                                this.DialogResult = DialogResult.OK;
                                this.Close();
                            }
                            else
                            {
                                Utilidades.mensaje(TipoMensaje.ERROR, "Hubo algún problema para crear el proveedor, inténtelo de nuevo.", 10);
                            }
                        }
                        else
                        {
                            Utilidades.mensaje(TipoMensaje.ERROR, "Debe seleccionar una comuna.", 10);
                        }
                    }
                    else
                    {
                        Utilidades.mensaje(TipoMensaje.ERROR, "Email no valido.", 10);
                    }
                }
                else
                {
                    Utilidades.mensaje(TipoMensaje.ERROR, "Debe escribir un giro de empresa.", 9);
                }
            }
            else
            {
                Utilidades.mensaje(TipoMensaje.ERROR, "Debe escribir un nombre.", 8);
            }
        }

        


        


    }
}
